/**
 * Object.create()方法是JavaScript中用于创建一个新对象的方法。它的作用是以指定的原型对象作为新对象的原型，并可选择性地为新对象定义属性和方法。
   Object.create(proto, [propertiesObject])接受两个参数：
1.  proto：必需，表示新对象的原型。它可以是一个对象字面量、null或者其他已存在的对象。新对象将继承proto对象的属性和方法。
2.  propertiesObject（可选）：一个可选的对象，用于定义新对象的属性和方法。该对象的每个属性都是通过属性描述符来定义的，类似于Object.defineProperty()的第二个参数。

 * @param {Object|null} proto 
 * @param {*} propertiesObject 
 * @returns 
 */
function myCreate(proto, propertiesObject) {
  if (typeof proto !== "object") {
    throw new TypeError("proto参数必须是null或者对象object");
  }

  // 创建一个构造函数
  function F() {}

  // 绑定原型
  F.prototype = proto;

  // 创建实例，此时Obj的原型就是proto
  const obj = new F();
  // 添加属性
  if (propertiesObject) {
    Object.defineProperties(obj, propertiesObject);
  }

  return obj;
}
